<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Agenda_frm( $this );

	class Agenda_frm extends Frm
	{

	function autoRefresh()
	{
		$this->setOptionsRetrieve('N');
		$this->make();
	}
	function Agenda_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncAgenda'] 						= new Input( "Codigo", "ncAgenda", '', false, true );
			$this->aFields['ncVisibilidad'] 					= new InputList ( "Visibilidad", "ncVisibilidad" );
			$this->aFields['ncDomicilio'] 					= new InputLookUp( "Domicilio", "ncDomicilio" );
			$this->aFields['ncCategoriaAgenda'] 		= new InputList( "Categoria", "ncCategoriaAgenda" );
			$this->aFields['cdAgenda'] 						= new InputText ( "Titulo", "cdAgenda" );
			$this->aFields['cUbicacion'] 					= new InputText ( "Ubicacion", "cUbicacion" );
			$this->aFields['Horario'] 							= new InputArray( "Horario" );
			$this->aFields['cDescripcion'] 					= new InputText ( "Descripcion" ,"cDescripcion" , "", true, true);
			$this->aFields['aInvitados'] 						= new InputMultiple( "Participantes", "aInvitados" );
			$this->aFields['aInvitados']->setValueSeparator( ";" );
			$this->aFields['aInvitados']->setInput( new InputLookUp( "" ) );
			$this->aFields['Horario']->addInput( new InputDate( "Desde", "dDesde" ) );
			$this->aFields['Horario']->addInput( new InputTime( "Hora desde", "nHoraDesde" ) );
			$this->aFields['Horario']->addInput( new InputTime( "Hora hasta", "nHoraHasta" ) );
			$this->aFields['ncProyecto'] 			= new InputList ( "Proyecto", "ncProyecto" );
	}
	function setValue( $ncAgenda )
		{
			$this->aFields['ncAgenda']->setValue( $ncAgenda );

			$cSql = "SELECT ncGrupo, ncVisibilidad, cdAgenda, cUbicacion, cDescripcion, ncDomicilio, ncCategoriaAgenda, dDesde, nHoraDesde, nHoraHasta, ncUsuario
								FROM atAgenda
								WHERE ncAgenda = $ncAgenda";
			$aRow = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aRow );
			$this->aFields['Horario']->aInput['dDesde']->setValue( $aRow['dDesde'] );
			$this->aFields['Horario']->aInput['nHoraDesde']->setValue( $aRow['nHoraDesde'] );
			$this->aFields['Horario']->aInput['nHoraHasta']->setValue( $aRow['nHoraHasta'] );
			$cSql = "SELECT ncPersona FROM atAgendaInvitado WHERE ncAgenda = $ncAgenda";
			$aInvitados = $this->oDatabase->getArray($cSql);
			$this->aFields['aInvitados']->setValue( implode( ",", $aInvitados) );
			// Pone el Proyecto
				$cSql = "SELECT ncProyecto FROM atProyectoActividad WHERE ncAgenda = $ncAgenda";
				$this->aFields['ncProyecto']->setValue(  $this->oDatabase->getData($cSql)  );
			return $aRow;
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 2:// Form Alta / Modificacion
					if ( $this->oModule->getAction() == AGREGAR_ACTIVIDAD)
						$this->aInput = array( 'ncAgenda', 'ncVisibilidad', 'Horario', 'cdAgenda', 'cUbicacion', 'ncCategoriaAgenda', 'aInvitados', 'cDescripcion', 'ncProyecto' );
					else
						$this->aInput = array( 'ncAgenda', 'ncVisibilidad', 'Horario', 'cdAgenda', 'cUbicacion', 'ncCategoriaAgenda', 'cDescripcion', 'ncProyecto' );
					break;
			}
		}
	function make ( $nOption = '')
		{
			$this->mergeOptions( $cOptions );
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() &&  $this->aFields['ncAgenda']->getValue() )
				{
						$aRow = $this->setValue( $this->aFields['ncAgenda']->getValue() );
					// Verifica que tenga Permisos
					$ncMiGrupo = obtenerMiGrupo();
					$bPermisoEscritura = ($aRow['ncVisibilidad'] == VISIBILIDAD_PUBLICO || $aRow['ncGrupo'] == $ncMiGrupo);
					if ( !$bPermisoEscritura )
					{
						$bPermisoLectura = ($aRow['ncVisibilidad'] != VISIBILIDAD_PRIVADO || $aRow['ncGrupo'] == $ncMiGrupo);
						if ( $bPermisoLectura )
						{
							$oDet = $this->oModule->loadClass( 'agenda_lst' );
							$oDet->makeDet();
							return true;
						} else
						{
							addMessage( "No tiene permisos" );
							return false;
						}
					}
				}
			return parent::make( $nOption );
		}
	function initializeForm()
		{
			// Configura el Titulo
				$this->setLabel( "Agenda" );
			return true;
		}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'ncVisibilidad':
					$cSql = "SELECT ncVisibilidad, cdVisibilidad FROM acVisibilidad";
					$oField->setDefault( VISIBILIDAD_PRIVADO );
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncCategoriaAgenda':
					$cSql = "SELECT ncCategoriaAgenda, cdCategoriaAgenda FROM atCategoriaAgenda ";
					$cSql .= " WHERE ncGrupo = " . obtenerMiGrupo();
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
					$oField->setForm( $this );
					$oField->addActionArray( 2, $this->oModule->getActionArray( AGREGAR_UNA_CATEGORIA) , '', $oField->getField() );
					$oField->addActionArray( 2, $this->oModule->getActionArray( MODIFICAR_UNA_CATEGORIA) , '', $oField->getField() );
				break;
				case 'cdAgenda':
					$oField->setMandatory( $this->isMandatory() );
					$oField->setLength( 60);
					$oField->setWidth( 300);
				break;
				case 'cUbicacion':
					$oField->setLength( 200);
					$oField->setWidth( 300);
				break;
				case 'aInvitados':
					$oField->setForm( $this );
					$oField->oInput->setField( "aInvitados_txt" );
					$oField->oInput->setFieldActions( 'ncPersona');
					initializePersona ( $oField->oInput );
					$oField->setWidth(330);
				break;
				case 'ncProyecto':
					if ( $oField->getValue() )
					{
						$oField->setHidden();
					} else
					{
						$oField->setMatrix( $this->oDatabase->getMatrix("SELECT ncProyecto, cdProyecto FROM atProyecto") );
					}
				break;
			}
		}
	}
?>